package com.jrx.anytxn.param.service.limit;

import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.i18n.response.TxnPage;
import com.jrx.anytxn.param.dto.limit.CreditLimitTypeReq;
import com.jrx.anytxn.param.dto.limit.CreditLimitTypeRes;

import java.util.List;

/**
 * @Classname ICreditLimitTypeService
 * @Description 额度节点表service接口
 * @Date 2019/6/12 0012 下午 21:04
 * @Created by yf
 */
public interface ICreditLimitTypeService {

    /**
     * 根据租户ID分页查询额度节点信息
     *
     * @param pageNum  页码
     * @param pageSize 页大小
     * @param tenantId 租户ID
     * @return com.jrx.anytxn.common.data.TxnPage<com.jrx.anytxn.param.dto.limit.CreditLimitTypeRes>
     * @author fan.yang
     * date: 2019/10/16 0016 上午 11:22
     */
    TxnPage<CreditLimitTypeRes> findAllPageByTenId(Integer pageNum, Integer pageSize, String tenantId) throws TxnException;

    /**
     * 根据租户ID和节点ID查询此条信息
     *
     * @param tenantId 租户ID
     * @param limitId  节点ID
     * @return com.jrx.anytxn.param.dto.limit.CreditLimitTypeRes
     * @author fan.yang
     * date: 2019/10/16 0016 上午 11:28
     */
    CreditLimitTypeRes findLimitTypeByTenIdAndLimitId(String tenantId, String limitId) throws TxnException;

    /**
     * 根据租户ID和节点ID删除此条信息
     *
     * @param tenantId 租户ID
     * @param limitId  节点ID
     * @return java.lang.Boolean
     * @author fan.yang
     * date: 2019/10/16 0016 上午 11:31
     */
    Boolean removeTenIdAndLimitId(String tenantId, String limitId) throws TxnException;

    /**
     * 增加额度类型信息
     *
     * @param creditLimitTypeReq 额度节点请求参数
     * @return com.jrx.anytxn.param.dto.limit.CreditLimitTypeRes
     * @author fan.yang
     * date: 2019/10/16 0016 上午 11:34
     */
    CreditLimitTypeRes addCustomerLimitInfoTable(CreditLimitTypeReq creditLimitTypeReq) throws TxnException;

    /**
     * 修改不为空字段的额度信息
     *
     * @param creditLimitTypeReq
     * @return
     * @throws TxnException
     */
    CreditLimitTypeRes modifyCustomerLimitInfoTable(CreditLimitTypeReq creditLimitTypeReq) throws TxnException;

    /**
     * 根据租户ID获取额度节点List
     *
     * @param tenantId 租户Id
     * @return java.util.List<com.jrx.anytxn.param.dto.limit.CreditLimitTypeRes>
     * @author fan.yang
     * date: 2019/10/16 0016 下午 13:25
     */
    List<CreditLimitTypeRes> findAllLimitTypeByTenId(String tenantId);


    /**
     * 根据机构号和租户ID获取额度节点信息
     *
     * @param orgId    机构号
     * @param tenantId 租户ID
     * @return java.util.List<com.jrx.anytxn.param.dto.limit.CreditLimitTypeRes>
     * @author fan.yang
     * date: 2019/10/16 0016 下午 13:27
     */
    List<CreditLimitTypeRes> findAllLimitTypeByOrgIdAndTenId(String orgId, String tenantId) throws TxnException;

    /**
     * 根据租户ID，节点ID和机构号查询信息
     *
     * @param limitId  节点ID
     * @param orgId    机构号
     * @param tenantId 租户ID
     * @return com.jrx.anytxn.param.dto.limit.CreditLimitTypeRes
     * @author fan.yang
     * date: 2019/10/16 0016 下午 13:31
     */
    CreditLimitTypeRes findByLimitIdAndOrgIdAndTenId(String limitId, String orgId, String tenantId) throws TxnException;

    /**
     * 获取额度属性
     *
     * @param limitId        节点ID
     * @param organizationId 机构号
     * @param tenantId       租户ID
     * @return java.lang.String
     * @author fan.yang
     * date: 2019/10/17 0017 下午 18:26
     */
    String getUserModal(String limitId, String organizationId, String tenantId);

}
